#include <stdio.h>

返回值类型
↓↓↓
int f1(void)
{
    return 100; // return后面的数据类型，要与返回值类型一致
}

double f2(void)
{
    return 3.14;
}

void f3(void)
{
    // 1. 什么都不写

    // 2. 直接return，不带参数
    return;
}

int main(int argc, char const *argv[])
{
    int a, b;
    a+b-c+d;
    int ret;

    if( (ret = scanf("%d%d", &a, &b)) != 2)
    {
        温馨提示...
    }



    f1();
    f2();
    // char a = 3;  // 0000 0011
    // char b = ~a; // 1111 1100 
    // printf("a: %hhd\n", a);
    // printf("b: %hhd\n", b);



    char a = 3; // 0000 0011
    char c = 6; // 0000 0110
    //             0000 0010
    //             0000 0111
    //             0000 0101
    printf("%hhd\n", a&c); // 2, 位与运算，逐位相与
    printf("%hhd\n", a|c); // 7, 位或运算，逐位相或
    printf("%hhd\n", a^c); // 5, 位异或运算，逐位相异或

    // 假设位域 [2:3] 用来控制某个特定的信息
    //                ↓↓↓↓
    char a = 3;  // 00000101
    char m = 12; // 00111100 [2:5]掩码

    // 1. 将 [2:3] 清零：
    a = a & ~m;
    a &= ~m;

    // 2. 将 [2:3] 置一：
    a = a | m;
    a |= m;

    // // 以下语句等价
    // a  = a + 100; // 普通赋值语句
    // a += 100;     // 复合赋值语句

    // a++;
    // a+=2;
    // a+=3;

    unsigned int a = 2;
    a <<= 2;

    printf("a: %d\n", a); // 2



    //                        0     3
    // char a = 0x03; //        01010101
    // char b = a>>2; //  1000000 （-0就是负的最大值）
    // printf("b: %hhd\n", b);

    // unsigned long a = 0x111AAA;

    // int a = 100;  // ←←←←
    // a = b = c = 100;

    // int w[5];
    // w = ....; // ×
    // w[0] = ..
    // w[1] = ..


    int a = 8;
    int b = 2;
    int c = a>b ? a : b;
    printf("c: %d\n", c);

    // 获得指定变量或者类型占用的字节数
    printf("%ld\n", sizeof(int));
    printf("%ld\n", sizeof(a));


    // int a = 10/3;  
    // float f = 10/3;

    // printf("%d\n", a);
    // printf("%f\n", f);

    // printf("%d\n", 10%3); // %左右两边必须都是整型

    // int a[10];

    // // int n=0;
    // // while(1)
    // // {
    // //     printf("%d\n", a[n%10]); // 0-9
    // //     n = n+1;
    // // }

    // int a = 1;
    // int b = 2;

    // // int c = ++a; // 前缀：先自加，再参与运算
    // // int d = b++; // 后缀：先参与运算，再自加

    // // int e = a++ + ++b; // 适用于所有可以进行加减法的场合，整数、浮点数、指针
    // f(a++, ++b);

    // // printf("a: %d\n", a); // 2
    // // printf("b: %d\n", b); // 3
    // // printf("c: %d\n", c); // 2
    // // printf("d: %d\n", d); // 2
    // // printf("e: %d\n", e); // 2

    // int a = 1;
    // int b = 2;
    // // // if(a > b)
    // // // if(a >= b)
    // // // if(a != b)

    // // if(! (a == b)) // a和b相等
    // // {
    // //     printf("a等于b\n");
    // // }

    // 当 a 在 0-100 之间的时候。。。
    if( a > 100  &&  (b>200, b=6, 0) ) // 逗号表达式的最终结果以最后一个为准
    {
        printf("...\n");
    }

    // printf("b: %d\n", b);

    return 0;
}

void f(int x, int y)
{
    printf("x: %d\n", x);
    printf("y: %d\n", y);
}
